第17回 svgicon のパッチレビュー
本家Issue: Patch #23980: Replace images with icon fonts - Redmine
PR:
Mariusさんパッチ+テスト改善: https://github.com/redmine-patch-meetup/redmine-dev-mirror/pull/67
SVG外部参照パッチ: https://github.com/redmine-patch-meetup/redmine-dev-mirror/pull/68
問題点 1
svg がインラインに展開されるのでキャッシュが効かない
問題点 2
icon helper の labelled_icon というメソッドと、html のクラス (class="icon icon-edit") という2箇所で icon に関する指定が必要。冗長な感じがする
解決方法
svg の use 要素で外部のsvg を読み込み可能 href を使用すれば良い?
https://developer.mozilla.org/ja/docs/Web/SVG/Element/use
https://tsuchippo.com/htmlcss-svgcolor では、xlink:href で読みこんでいるけど、現在は非推奨らしい。
<svg>
<use href="./edit.svg"></use>
</svg>
MariusさんのパッチはPOCのような形で、Issueビューの上の部分だけのもの
問題点1については、SVGファイル内を<symbol>要素で囲むことで、外部リンクとして読み込める形で対応
IE11はSVGの外部読み込みには対応してなさそうだが、本家側でのIE11ドロップに期待。
取り急ぎ、参考実装し、パッチを該当Issueに送付予定。
https://github.com/redmine-patch-meetup/redmine-dev-mirror/pull/68/files
labelled_icon メソッドは冗長なので、 link_to か、 content_tag に修正を加え、 icon: :edit, svg: true とかオプションをつけるだけで、svg アイコンが表示されるようになるとかっこいいのではないか?
現状、svg アイコンがやや上に表示される気がする。
現状=>SVGアイコン移行パスとして、現状アイコンとSVGアイコンが設定で切り替えられると良いかも。